package com.school.information.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.school.information.dto.RoleDTO;
import com.school.information.entity.SysRoleEntity;
import com.school.information.enums.status.EnabledEnum;
import com.school.information.qo.SysRoleQO;
import com.school.information.vo.RoleVO;

import java.util.List;
import java.util.Set;

public interface SysRoleService extends IService<SysRoleEntity> {

    /**
     * 获取用户角色编码
     *
     * @param userId
     * @return
     */
    Set<String> findRoleByUserId(Long userId);

    /**
     * 获取用户角色id
     *
     * @param userId
     * @return
     */
    Set<Long> findRoleIdByUserId(Long userId);

    /**
     * 分页查询角色信息
     *
     * @param sysRole
     * @return
     */
    IPage<SysRoleEntity> pageList(SysRoleQO sysRole);

    /**
     * 获取最大编码
     *
     * @return
     */
    String getMaxCode();

    /**
     * 新增角色、权限信息
     *
     * @param roleDTO
     * @return
     */
    boolean saveInfo(RoleDTO roleDTO);

    /**
     * 根据角色编码，查询角色信息
     *
     * @param code
     * @return
     */
    SysRoleEntity getByCode(String code);

    /**
     * 根据角色名称，查询角色信息
     *
     * @param name
     * @return
     */
    SysRoleEntity getByName(String name);

    /**
     * 根据id 获取角色 权限信息
     *
     * @param id
     * @return
     */
    RoleVO getInfoById(Long id);

    /**
     * 更新角色信息
     *
     * @param roleDTO
     * @return
     */
    boolean updateInfo(RoleDTO roleDTO);

    /**
     * 更新角色状态信息
     *
     * @return
     */
    boolean updateStatus(Long id, EnabledEnum enable);

    /**
     * 查询所有角色信息 启用状态
     *
     * @return
     */
    List<SysRoleEntity> findList();
}
